home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 19 / Mac Magazin and MacEasy Magazine CD - Issue 19.iso / Utilities / uae-0.4 / Source Code / CPU Sources / cpu2.c < prev    next >
C/C++ Source or Header  |  1996-02-13  |  37KB  |  1,350 lines

  1. #include "config.h"
  2. #include "amiga.h"
  3. #include "options.h"
  4. #include <stdlib.h>
  5. #include "memory.h"
  6. #include "custom.h"
  7. #include "newcpu.h"
  8. #include "cputbl.h"
  9. void op_2000(UWORD opcode)
  10. {
  11.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  12.     ULONG dstreg = (opcode & 3584) >> 9;
  13. {{    LONG src = regs.d[srcreg];
  14. {    regs.v = regs.c = 0;
  15.     regs.z = ((LONG)(src)) == 0;
  16.     regs.n = ((LONG)(src)) < 0;
  17.     regs.d[dstreg] = (src);
  18. }}}}
  19. void op_2008(UWORD opcode)
  20. {
  21.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  22.     ULONG dstreg = (opcode & 3584) >> 9;
  23. {{    LONG src = regs.a[srcreg];
  24. {    regs.v = regs.c = 0;
  25.     regs.z = ((LONG)(src)) == 0;
  26.     regs.n = ((LONG)(src)) < 0;
  27.     regs.d[dstreg] = (src);
  28. }}}}
  29. void op_2010(UWORD opcode)
  30. {
  31.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  32.     ULONG dstreg = (opcode & 3584) >> 9;
  33. {{    CPTR srca = regs.a[srcreg];
  34.     LONG src = get_long(srca);
  35. {    regs.v = regs.c = 0;
  36.     regs.z = ((LONG)(src)) == 0;
  37.     regs.n = ((LONG)(src)) < 0;
  38.     regs.d[dstreg] = (src);
  39. }}}}
  40. void op_2018(UWORD opcode)
  41. {
  42.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  43.     ULONG dstreg = (opcode & 3584) >> 9;
  44. {{    CPTR srca = regs.a[srcreg];
  45.     LONG src = get_long(srca);
  46. {    regs.a[srcreg] += 4;
  47. {    regs.v = regs.c = 0;
  48.     regs.z = ((LONG)(src)) == 0;
  49.     regs.n = ((LONG)(src)) < 0;
  50.     regs.d[dstreg] = (src);
  51. }}}}}
  52. void op_2020(UWORD opcode)
  53. {
  54.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  55.     ULONG dstreg = (opcode & 3584) >> 9;
  56. {{    regs.a[srcreg] -= 4;
  57. {    CPTR srca = regs.a[srcreg];
  58.     LONG src = get_long(srca);
  59. {    regs.v = regs.c = 0;
  60.     regs.z = ((LONG)(src)) == 0;
  61.     regs.n = ((LONG)(src)) < 0;
  62.     regs.d[dstreg] = (src);
  63. }}}}}
  64. void op_2028(UWORD opcode)
  65. {
  66.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  67.     ULONG dstreg = (opcode & 3584) >> 9;
  68. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  69.     LONG src = get_long(srca);
  70. {    regs.v = regs.c = 0;
  71.     regs.z = ((LONG)(src)) == 0;
  72.     regs.n = ((LONG)(src)) < 0;
  73.     regs.d[dstreg] = (src);
  74. }}}}
  75. void op_2030(UWORD opcode)
  76. {
  77.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  78.     ULONG dstreg = (opcode & 3584) >> 9;
  79. {{    CPTR srca = regs.a[srcreg];
  80.     UWORD srcdp = nextiword();
  81.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  82. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  83.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  84.     srca += srcdpr;
  85. {    LONG src = get_long(srca);
  86. {    regs.v = regs.c = 0;
  87.     regs.z = ((LONG)(src)) == 0;
  88.     regs.n = ((LONG)(src)) < 0;
  89.     regs.d[dstreg] = (src);
  90. }}}}}}
  91. void op_2038(UWORD opcode)
  92. {
  93.     ULONG dstreg = (opcode & 3584) >> 9;
  94. {{    CPTR srca = (LONG)(WORD)nextiword();
  95.     LONG src = get_long(srca);
  96. {    regs.v = regs.c = 0;
  97.     regs.z = ((LONG)(src)) == 0;
  98.     regs.n = ((LONG)(src)) < 0;
  99.     regs.d[dstreg] = (src);
  100. }}}}
  101. void op_2039(UWORD opcode)
  102. {
  103.     ULONG dstreg = (opcode & 3584) >> 9;
  104. {{    CPTR srca = nextilong();
  105.     LONG src = get_long(srca);
  106. {    regs.v = regs.c = 0;
  107.     regs.z = ((LONG)(src)) == 0;
  108.     regs.n = ((LONG)(src)) < 0;
  109.     regs.d[dstreg] = (src);
  110. }}}}
  111. void op_203a(UWORD opcode)
  112. {
  113.     ULONG dstreg = (opcode & 3584) >> 9;
  114. {{    CPTR srca = m68k_getpc();
  115.     srca += (LONG)(WORD)nextiword();
  116. {    LONG src = get_long(srca);
  117. {    regs.v = regs.c = 0;
  118.     regs.z = ((LONG)(src)) == 0;
  119.     regs.n = ((LONG)(src)) < 0;
  120.     regs.d[dstreg] = (src);
  121. }}}}}
  122. void op_203b(UWORD opcode)
  123. {
  124.     ULONG dstreg = (opcode & 3584) >> 9;
  125. {{    CPTR srca = m68k_getpc();
  126.     UWORD srcdp = nextiword();
  127.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  128. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  129.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  130.     srca += srcdpr;
  131. {    LONG src = get_long(srca);
  132. {    regs.v = regs.c = 0;
  133.     regs.z = ((LONG)(src)) == 0;
  134.     regs.n = ((LONG)(src)) < 0;
  135.     regs.d[dstreg] = (src);
  136. }}}}}}
  137. void op_203c(UWORD opcode)
  138. {
  139.     ULONG dstreg = (opcode & 3584) >> 9;
  140. {{    LONG src = nextilong();
  141. {    regs.v = regs.c = 0;
  142.     regs.z = ((LONG)(src)) == 0;
  143.     regs.n = ((LONG)(src)) < 0;
  144.     regs.d[dstreg] = (src);
  145. }}}}
  146. void op_2040(UWORD opcode)
  147. {
  148.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  149.     ULONG dstreg = (opcode & 3584) >> 9;
  150. {{    LONG src = regs.d[srcreg];
  151. {    regs.a[dstreg] = (src);
  152. }}}}
  153. void op_2048(UWORD opcode)
  154. {
  155.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  156.     ULONG dstreg = (opcode & 3584) >> 9;
  157. {{    LONG src = regs.a[srcreg];
  158. {    regs.a[dstreg] = (src);
  159. }}}}
  160. void op_2050(UWORD opcode)
  161. {
  162.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  163.     ULONG dstreg = (opcode & 3584) >> 9;
  164. {{    CPTR srca = regs.a[srcreg];
  165.     LONG src = get_long(srca);
  166. {    regs.a[dstreg] = (src);
  167. }}}}
  168. void op_2058(UWORD opcode)
  169. {
  170.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  171.     ULONG dstreg = (opcode & 3584) >> 9;
  172. {{    CPTR srca = regs.a[srcreg];
  173.     LONG src = get_long(srca);
  174. {    regs.a[srcreg] += 4;
  175. {    regs.a[dstreg] = (src);
  176. }}}}}
  177. void op_2060(UWORD opcode)
  178. {
  179.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  180.     ULONG dstreg = (opcode & 3584) >> 9;
  181. {{    regs.a[srcreg] -= 4;
  182. {    CPTR srca = regs.a[srcreg];
  183.     LONG src = get_long(srca);
  184. {    regs.a[dstreg] = (src);
  185. }}}}}
  186. void op_2068(UWORD opcode)
  187. {
  188.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  189.     ULONG dstreg = (opcode & 3584) >> 9;
  190. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  191.     LONG src = get_long(srca);
  192. {    regs.a[dstreg] = (src);
  193. }}}}
  194. void op_2070(UWORD opcode)
  195. {
  196.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  197.     ULONG dstreg = (opcode & 3584) >> 9;
  198. {{    CPTR srca = regs.a[srcreg];
  199.     UWORD srcdp = nextiword();
  200.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  201. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  202.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  203.     srca += srcdpr;
  204. {    LONG src = get_long(srca);
  205. {    regs.a[dstreg] = (src);
  206. }}}}}}
  207. void op_2078(UWORD opcode)
  208. {
  209.     ULONG dstreg = (opcode & 3584) >> 9;
  210. {{    CPTR srca = (LONG)(WORD)nextiword();
  211.     LONG src = get_long(srca);
  212. {    regs.a[dstreg] = (src);
  213. }}}}
  214. void op_2079(UWORD opcode)
  215. {
  216.     ULONG dstreg = (opcode & 3584) >> 9;
  217. {{    CPTR srca = nextilong();
  218.     LONG src = get_long(srca);
  219. {    regs.a[dstreg] = (src);
  220. }}}}
  221. void op_207a(UWORD opcode)
  222. {
  223.     ULONG dstreg = (opcode & 3584) >> 9;
  224. {{    CPTR srca = m68k_getpc();
  225.     srca += (LONG)(WORD)nextiword();
  226. {    LONG src = get_long(srca);
  227. {    regs.a[dstreg] = (src);
  228. }}}}}
  229. void op_207b(UWORD opcode)
  230. {
  231.     ULONG dstreg = (opcode & 3584) >> 9;
  232. {{    CPTR srca = m68k_getpc();
  233.     UWORD srcdp = nextiword();
  234.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  235. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  236.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  237.     srca += srcdpr;
  238. {    LONG src = get_long(srca);
  239. {    regs.a[dstreg] = (src);
  240. }}}}}}
  241. void op_207c(UWORD opcode)
  242. {
  243.     ULONG dstreg = (opcode & 3584) >> 9;
  244. {{    LONG src = nextilong();
  245. {    regs.a[dstreg] = (src);
  246. }}}}
  247. void op_2080(UWORD opcode)
  248. {
  249.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  250.     ULONG dstreg = (opcode & 3584) >> 9;
  251. {{    LONG src = regs.d[srcreg];
  252. {    CPTR dsta = regs.a[dstreg];
  253.     regs.v = regs.c = 0;
  254.     regs.z = ((LONG)(src)) == 0;
  255.     regs.n = ((LONG)(src)) < 0;
  256.     put_long(dsta,src);
  257. }}}}
  258. void op_2088(UWORD opcode)
  259. {
  260.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  261.     ULONG dstreg = (opcode & 3584) >> 9;
  262. {{    LONG src = regs.a[srcreg];
  263. {    CPTR dsta = regs.a[dstreg];
  264.     regs.v = regs.c = 0;
  265.     regs.z = ((LONG)(src)) == 0;
  266.     regs.n = ((LONG)(src)) < 0;
  267.     put_long(dsta,src);
  268. }}}}
  269. void op_2090(UWORD opcode)
  270. {
  271.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  272.     ULONG dstreg = (opcode & 3584) >> 9;
  273. {{    CPTR srca = regs.a[srcreg];
  274.     LONG src = get_long(srca);
  275. {    CPTR dsta = regs.a[dstreg];
  276.     regs.v = regs.c = 0;
  277.     regs.z = ((LONG)(src)) == 0;
  278.     regs.n = ((LONG)(src)) < 0;
  279.     put_long(dsta,src);
  280. }}}}
  281. void op_2098(UWORD opcode)
  282. {
  283.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  284.     ULONG dstreg = (opcode & 3584) >> 9;
  285. {{    CPTR srca = regs.a[srcreg];
  286.     LONG src = get_long(srca);
  287. {    regs.a[srcreg] += 4;
  288. {    CPTR dsta = regs.a[dstreg];
  289.     regs.v = regs.c = 0;
  290.     regs.z = ((LONG)(src)) == 0;
  291.     regs.n = ((LONG)(src)) < 0;
  292.     put_long(dsta,src);
  293. }}}}}
  294. void op_20a0(UWORD opcode)
  295. {
  296.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  297.     ULONG dstreg = (opcode & 3584) >> 9;
  298. {{    regs.a[srcreg] -= 4;
  299. {    CPTR srca = regs.a[srcreg];
  300.     LONG src = get_long(srca);
  301. {    CPTR dsta = regs.a[dstreg];
  302.     regs.v = regs.c = 0;
  303.     regs.z = ((LONG)(src)) == 0;
  304.     regs.n = ((LONG)(src)) < 0;
  305.     put_long(dsta,src);
  306. }}}}}
  307. void op_20a8(UWORD opcode)
  308. {
  309.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  310.     ULONG dstreg = (opcode & 3584) >> 9;
  311. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  312.     LONG src = get_long(srca);
  313. {    CPTR dsta = regs.a[dstreg];
  314.     regs.v = regs.c = 0;
  315.     regs.z = ((LONG)(src)) == 0;
  316.     regs.n = ((LONG)(src)) < 0;
  317.     put_long(dsta,src);
  318. }}}}
  319. void op_20b0(UWORD opcode)
  320. {
  321.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  322.     ULONG dstreg = (opcode & 3584) >> 9;
  323. {{    CPTR srca = regs.a[srcreg];
  324.     UWORD srcdp = nextiword();
  325.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  326. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  327.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  328.     srca += srcdpr;
  329. {    LONG src = get_long(srca);
  330. {    CPTR dsta = regs.a[dstreg];
  331.     regs.v = regs.c = 0;
  332.     regs.z = ((LONG)(src)) == 0;
  333.     regs.n = ((LONG)(src)) < 0;
  334.     put_long(dsta,src);
  335. }}}}}}
  336. void op_20b8(UWORD opcode)
  337. {
  338.     ULONG dstreg = (opcode & 3584) >> 9;
  339. {{    CPTR srca = (LONG)(WORD)nextiword();
  340.     LONG src = get_long(srca);
  341. {    CPTR dsta = regs.a[dstreg];
  342.     regs.v = regs.c = 0;
  343.     regs.z = ((LONG)(src)) == 0;
  344.     regs.n = ((LONG)(src)) < 0;
  345.     put_long(dsta,src);
  346. }}}}
  347. void op_20b9(UWORD opcode)
  348. {
  349.     ULONG dstreg = (opcode & 3584) >> 9;
  350. {{    CPTR srca = nextilong();
  351.     LONG src = get_long(srca);
  352. {    CPTR dsta = regs.a[dstreg];
  353.     regs.v = regs.c = 0;
  354.     regs.z = ((LONG)(src)) == 0;
  355.     regs.n = ((LONG)(src)) < 0;
  356.     put_long(dsta,src);
  357. }}}}
  358. void op_20ba(UWORD opcode)
  359. {
  360.     ULONG dstreg = (opcode & 3584) >> 9;
  361. {{    CPTR srca = m68k_getpc();
  362.     srca += (LONG)(WORD)nextiword();
  363. {    LONG src = get_long(srca);
  364. {    CPTR dsta = regs.a[dstreg];
  365.     regs.v = regs.c = 0;
  366.     regs.z = ((LONG)(src)) == 0;
  367.     regs.n = ((LONG)(src)) < 0;
  368.     put_long(dsta,src);
  369. }}}}}
  370. void op_20bb(UWORD opcode)
  371. {
  372.     ULONG dstreg = (opcode & 3584) >> 9;
  373. {{    CPTR srca = m68k_getpc();
  374.     UWORD srcdp = nextiword();
  375.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  376. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  377.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  378.     srca += srcdpr;
  379. {    LONG src = get_long(srca);
  380. {    CPTR dsta = regs.a[dstreg];
  381.     regs.v = regs.c = 0;
  382.     regs.z = ((LONG)(src)) == 0;
  383.     regs.n = ((LONG)(src)) < 0;
  384.     put_long(dsta,src);
  385. }}}}}}
  386. void op_20bc(UWORD opcode)
  387. {
  388.     ULONG dstreg = (opcode & 3584) >> 9;
  389. {{    LONG src = nextilong();
  390. {    CPTR dsta = regs.a[dstreg];
  391.     regs.v = regs.c = 0;
  392.     regs.z = ((LONG)(src)) == 0;
  393.     regs.n = ((LONG)(src)) < 0;
  394.     put_long(dsta,src);
  395. }}}}
  396. void op_20c0(UWORD opcode)
  397. {
  398.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  399.     ULONG dstreg = (opcode & 3584) >> 9;
  400. {{    LONG src = regs.d[srcreg];
  401. {    CPTR dsta = regs.a[dstreg];
  402. {    regs.a[dstreg] += 4;
  403.     regs.v = regs.c = 0;
  404.     regs.z = ((LONG)(src)) == 0;
  405.     regs.n = ((LONG)(src)) < 0;
  406.     put_long(dsta,src);
  407. }}}}}
  408. void op_20c8(UWORD opcode)
  409. {
  410.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  411.     ULONG dstreg = (opcode & 3584) >> 9;
  412. {{    LONG src = regs.a[srcreg];
  413. {    CPTR dsta = regs.a[dstreg];
  414. {    regs.a[dstreg] += 4;
  415.     regs.v = regs.c = 0;
  416.     regs.z = ((LONG)(src)) == 0;
  417.     regs.n = ((LONG)(src)) < 0;
  418.     put_long(dsta,src);
  419. }}}}}
  420. void op_20d0(UWORD opcode)
  421. {
  422.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  423.     ULONG dstreg = (opcode & 3584) >> 9;
  424. {{    CPTR srca = regs.a[srcreg];
  425.     LONG src = get_long(srca);
  426. {    CPTR dsta = regs.a[dstreg];
  427. {    regs.a[dstreg] += 4;
  428.     regs.v = regs.c = 0;
  429.     regs.z = ((LONG)(src)) == 0;
  430.     regs.n = ((LONG)(src)) < 0;
  431.     put_long(dsta,src);
  432. }}}}}
  433. void op_20d8(UWORD opcode)
  434. {
  435.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  436.     ULONG dstreg = (opcode & 3584) >> 9;
  437. {{    CPTR srca = regs.a[srcreg];
  438.     LONG src = get_long(srca);
  439. {    regs.a[srcreg] += 4;
  440. {    CPTR dsta = regs.a[dstreg];
  441. {    regs.a[dstreg] += 4;
  442.     regs.v = regs.c = 0;
  443.     regs.z = ((LONG)(src)) == 0;
  444.     regs.n = ((LONG)(src)) < 0;
  445.     put_long(dsta,src);
  446. }}}}}}
  447. void op_20e0(UWORD opcode)
  448. {
  449.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  450.     ULONG dstreg = (opcode & 3584) >> 9;
  451. {{    regs.a[srcreg] -= 4;
  452. {    CPTR srca = regs.a[srcreg];
  453.     LONG src = get_long(srca);
  454. {    CPTR dsta = regs.a[dstreg];
  455. {    regs.a[dstreg] += 4;
  456.     regs.v = regs.c = 0;
  457.     regs.z = ((LONG)(src)) == 0;
  458.     regs.n = ((LONG)(src)) < 0;
  459.     put_long(dsta,src);
  460. }}}}}}
  461. void op_20e8(UWORD opcode)
  462. {
  463.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  464.     ULONG dstreg = (opcode & 3584) >> 9;
  465. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  466.     LONG src = get_long(srca);
  467. {    CPTR dsta = regs.a[dstreg];
  468. {    regs.a[dstreg] += 4;
  469.     regs.v = regs.c = 0;
  470.     regs.z = ((LONG)(src)) == 0;
  471.     regs.n = ((LONG)(src)) < 0;
  472.     put_long(dsta,src);
  473. }}}}}
  474. void op_20f0(UWORD opcode)
  475. {
  476.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  477.     ULONG dstreg = (opcode & 3584) >> 9;
  478. {{    CPTR srca = regs.a[srcreg];
  479.     UWORD srcdp = nextiword();
  480.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  481. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  482.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  483.     srca += srcdpr;
  484. {    LONG src = get_long(srca);
  485. {    CPTR dsta = regs.a[dstreg];
  486. {    regs.a[dstreg] += 4;
  487.     regs.v = regs.c = 0;
  488.     regs.z = ((LONG)(src)) == 0;
  489.     regs.n = ((LONG)(src)) < 0;
  490.     put_long(dsta,src);
  491. }}}}}}}
  492. void op_20f8(UWORD opcode)
  493. {
  494.     ULONG dstreg = (opcode & 3584) >> 9;
  495. {{    CPTR srca = (LONG)(WORD)nextiword();
  496.     LONG src = get_long(srca);
  497. {    CPTR dsta = regs.a[dstreg];
  498. {    regs.a[dstreg] += 4;
  499.     regs.v = regs.c = 0;
  500.     regs.z = ((LONG)(src)) == 0;
  501.     regs.n = ((LONG)(src)) < 0;
  502.     put_long(dsta,src);
  503. }}}}}
  504. void op_20f9(UWORD opcode)
  505. {
  506.     ULONG dstreg = (opcode & 3584) >> 9;
  507. {{    CPTR srca = nextilong();
  508.     LONG src = get_long(srca);
  509. {    CPTR dsta = regs.a[dstreg];
  510. {    regs.a[dstreg] += 4;
  511.     regs.v = regs.c = 0;
  512.     regs.z = ((LONG)(src)) == 0;
  513.     regs.n = ((LONG)(src)) < 0;
  514.     put_long(dsta,src);
  515. }}}}}
  516. void op_20fa(UWORD opcode)
  517. {
  518.     ULONG dstreg = (opcode & 3584) >> 9;
  519. {{    CPTR srca = m68k_getpc();
  520.     srca += (LONG)(WORD)nextiword();
  521. {    LONG src = get_long(srca);
  522. {    CPTR dsta = regs.a[dstreg];
  523. {    regs.a[dstreg] += 4;
  524.     regs.v = regs.c = 0;
  525.     regs.z = ((LONG)(src)) == 0;
  526.     regs.n = ((LONG)(src)) < 0;
  527.     put_long(dsta,src);
  528. }}}}}}
  529. void op_20fb(UWORD opcode)
  530. {
  531.     ULONG dstreg = (opcode & 3584) >> 9;
  532. {{    CPTR srca = m68k_getpc();
  533.     UWORD srcdp = nextiword();
  534.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  535. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  536.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  537.     srca += srcdpr;
  538. {    LONG src = get_long(srca);
  539. {    CPTR dsta = regs.a[dstreg];
  540. {    regs.a[dstreg] += 4;
  541.     regs.v = regs.c = 0;
  542.     regs.z = ((LONG)(src)) == 0;
  543.     regs.n = ((LONG)(src)) < 0;
  544.     put_long(dsta,src);
  545. }}}}}}}
  546. void op_20fc(UWORD opcode)
  547. {
  548.     ULONG dstreg = (opcode & 3584) >> 9;
  549. {{    LONG src = nextilong();
  550. {    CPTR dsta = regs.a[dstreg];
  551. {    regs.a[dstreg] += 4;
  552.     regs.v = regs.c = 0;
  553.     regs.z = ((LONG)(src)) == 0;
  554.     regs.n = ((LONG)(src)) < 0;
  555.     put_long(dsta,src);
  556. }}}}}
  557. void op_2100(UWORD opcode)
  558. {
  559.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  560.     ULONG dstreg = (opcode & 3584) >> 9;
  561. {{    LONG src = regs.d[srcreg];
  562. {    regs.a[dstreg] -= 4;
  563. {    CPTR dsta = regs.a[dstreg];
  564.     regs.v = regs.c = 0;
  565.     regs.z = ((LONG)(src)) == 0;
  566.     regs.n = ((LONG)(src)) < 0;
  567.     put_long(dsta,src);
  568. }}}}}
  569. void op_2108(UWORD opcode)
  570. {
  571.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  572.     ULONG dstreg = (opcode & 3584) >> 9;
  573. {{    LONG src = regs.a[srcreg];
  574. {    regs.a[dstreg] -= 4;
  575. {    CPTR dsta = regs.a[dstreg];
  576.     regs.v = regs.c = 0;
  577.     regs.z = ((LONG)(src)) == 0;
  578.     regs.n = ((LONG)(src)) < 0;
  579.     put_long(dsta,src);
  580. }}}}}
  581. void op_2110(UWORD opcode)
  582. {
  583.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  584.     ULONG dstreg = (opcode & 3584) >> 9;
  585. {{    CPTR srca = regs.a[srcreg];
  586.     LONG src = get_long(srca);
  587. {    regs.a[dstreg] -= 4;
  588. {    CPTR dsta = regs.a[dstreg];
  589.     regs.v = regs.c = 0;
  590.     regs.z = ((LONG)(src)) == 0;
  591.     regs.n = ((LONG)(src)) < 0;
  592.     put_long(dsta,src);
  593. }}}}}
  594. void op_2118(UWORD opcode)
  595. {
  596.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  597.     ULONG dstreg = (opcode & 3584) >> 9;
  598. {{    CPTR srca = regs.a[srcreg];
  599.     LONG src = get_long(srca);
  600. {    regs.a[srcreg] += 4;
  601. {    regs.a[dstreg] -= 4;
  602. {    CPTR dsta = regs.a[dstreg];
  603.     regs.v = regs.c = 0;
  604.     regs.z = ((LONG)(src)) == 0;
  605.     regs.n = ((LONG)(src)) < 0;
  606.     put_long(dsta,src);
  607. }}}}}}
  608. void op_2120(UWORD opcode)
  609. {
  610.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  611.     ULONG dstreg = (opcode & 3584) >> 9;
  612. {{    regs.a[srcreg] -= 4;
  613. {    CPTR srca = regs.a[srcreg];
  614.     LONG src = get_long(srca);
  615. {    regs.a[dstreg] -= 4;
  616. {    CPTR dsta = regs.a[dstreg];
  617.     regs.v = regs.c = 0;
  618.     regs.z = ((LONG)(src)) == 0;
  619.     regs.n = ((LONG)(src)) < 0;
  620.     put_long(dsta,src);
  621. }}}}}}
  622. void op_2128(UWORD opcode)
  623. {
  624.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  625.     ULONG dstreg = (opcode & 3584) >> 9;
  626. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  627.     LONG src = get_long(srca);
  628. {    regs.a[dstreg] -= 4;
  629. {    CPTR dsta = regs.a[dstreg];
  630.     regs.v = regs.c = 0;
  631.     regs.z = ((LONG)(src)) == 0;
  632.     regs.n = ((LONG)(src)) < 0;
  633.     put_long(dsta,src);
  634. }}}}}
  635. void op_2130(UWORD opcode)
  636. {
  637.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  638.     ULONG dstreg = (opcode & 3584) >> 9;
  639. {{    CPTR srca = regs.a[srcreg];
  640.     UWORD srcdp = nextiword();
  641.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  642. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  643.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  644.     srca += srcdpr;
  645. {    LONG src = get_long(srca);
  646. {    regs.a[dstreg] -= 4;
  647. {    CPTR dsta = regs.a[dstreg];
  648.     regs.v = regs.c = 0;
  649.     regs.z = ((LONG)(src)) == 0;
  650.     regs.n = ((LONG)(src)) < 0;
  651.     put_long(dsta,src);
  652. }}}}}}}
  653. void op_2138(UWORD opcode)
  654. {
  655.     ULONG dstreg = (opcode & 3584) >> 9;
  656. {{    CPTR srca = (LONG)(WORD)nextiword();
  657.     LONG src = get_long(srca);
  658. {    regs.a[dstreg] -= 4;
  659. {    CPTR dsta = regs.a[dstreg];
  660.     regs.v = regs.c = 0;
  661.     regs.z = ((LONG)(src)) == 0;
  662.     regs.n = ((LONG)(src)) < 0;
  663.     put_long(dsta,src);
  664. }}}}}
  665. void op_2139(UWORD opcode)
  666. {
  667.     ULONG dstreg = (opcode & 3584) >> 9;
  668. {{    CPTR srca = nextilong();
  669.     LONG src = get_long(srca);
  670. {    regs.a[dstreg] -= 4;
  671. {    CPTR dsta = regs.a[dstreg];
  672.     regs.v = regs.c = 0;
  673.     regs.z = ((LONG)(src)) == 0;
  674.     regs.n = ((LONG)(src)) < 0;
  675.     put_long(dsta,src);
  676. }}}}}
  677. void op_213a(UWORD opcode)
  678. {
  679.     ULONG dstreg = (opcode & 3584) >> 9;
  680. {{    CPTR srca = m68k_getpc();
  681.     srca += (LONG)(WORD)nextiword();
  682. {    LONG src = get_long(srca);
  683. {    regs.a[dstreg] -= 4;
  684. {    CPTR dsta = regs.a[dstreg];
  685.     regs.v = regs.c = 0;
  686.     regs.z = ((LONG)(src)) == 0;
  687.     regs.n = ((LONG)(src)) < 0;
  688.     put_long(dsta,src);
  689. }}}}}}
  690. void op_213b(UWORD opcode)
  691. {
  692.     ULONG dstreg = (opcode & 3584) >> 9;
  693. {{    CPTR srca = m68k_getpc();
  694.     UWORD srcdp = nextiword();
  695.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  696. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  697.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  698.     srca += srcdpr;
  699. {    LONG src = get_long(srca);
  700. {    regs.a[dstreg] -= 4;
  701. {    CPTR dsta = regs.a[dstreg];
  702.     regs.v = regs.c = 0;
  703.     regs.z = ((LONG)(src)) == 0;
  704.     regs.n = ((LONG)(src)) < 0;
  705.     put_long(dsta,src);
  706. }}}}}}}
  707. void op_213c(UWORD opcode)
  708. {
  709.     ULONG dstreg = (opcode & 3584) >> 9;
  710. {{    LONG src = nextilong();
  711. {    regs.a[dstreg] -= 4;
  712. {    CPTR dsta = regs.a[dstreg];
  713.     regs.v = regs.c = 0;
  714.     regs.z = ((LONG)(src)) == 0;
  715.     regs.n = ((LONG)(src)) < 0;
  716.     put_long(dsta,src);
  717. }}}}}
  718. void op_2140(UWORD opcode)
  719. {
  720.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  721.     ULONG dstreg = (opcode & 3584) >> 9;
  722. {{    LONG src = regs.d[srcreg];
  723. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  724.     regs.v = regs.c = 0;
  725.     regs.z = ((LONG)(src)) == 0;
  726.     regs.n = ((LONG)(src)) < 0;
  727.     put_long(dsta,src);
  728. }}}}
  729. void op_2148(UWORD opcode)
  730. {
  731.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  732.     ULONG dstreg = (opcode & 3584) >> 9;
  733. {{    LONG src = regs.a[srcreg];
  734. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  735.     regs.v = regs.c = 0;
  736.     regs.z = ((LONG)(src)) == 0;
  737.     regs.n = ((LONG)(src)) < 0;
  738.     put_long(dsta,src);
  739. }}}}
  740. void op_2150(UWORD opcode)
  741. {
  742.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  743.     ULONG dstreg = (opcode & 3584) >> 9;
  744. {{    CPTR srca = regs.a[srcreg];
  745.     LONG src = get_long(srca);
  746. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  747.     regs.v = regs.c = 0;
  748.     regs.z = ((LONG)(src)) == 0;
  749.     regs.n = ((LONG)(src)) < 0;
  750.     put_long(dsta,src);
  751. }}}}
  752. void op_2158(UWORD opcode)
  753. {
  754.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  755.     ULONG dstreg = (opcode & 3584) >> 9;
  756. {{    CPTR srca = regs.a[srcreg];
  757.     LONG src = get_long(srca);
  758. {    regs.a[srcreg] += 4;
  759. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  760.     regs.v = regs.c = 0;
  761.     regs.z = ((LONG)(src)) == 0;
  762.     regs.n = ((LONG)(src)) < 0;
  763.     put_long(dsta,src);
  764. }}}}}
  765. void op_2160(UWORD opcode)
  766. {
  767.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  768.     ULONG dstreg = (opcode & 3584) >> 9;
  769. {{    regs.a[srcreg] -= 4;
  770. {    CPTR srca = regs.a[srcreg];
  771.     LONG src = get_long(srca);
  772. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  773.     regs.v = regs.c = 0;
  774.     regs.z = ((LONG)(src)) == 0;
  775.     regs.n = ((LONG)(src)) < 0;
  776.     put_long(dsta,src);
  777. }}}}}
  778. void op_2168(UWORD opcode)
  779. {
  780.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  781.     ULONG dstreg = (opcode & 3584) >> 9;
  782. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  783.     LONG src = get_long(srca);
  784. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  785.     regs.v = regs.c = 0;
  786.     regs.z = ((LONG)(src)) == 0;
  787.     regs.n = ((LONG)(src)) < 0;
  788.     put_long(dsta,src);
  789. }}}}
  790. void op_2170(UWORD opcode)
  791. {
  792.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  793.     ULONG dstreg = (opcode & 3584) >> 9;
  794. {{    CPTR srca = regs.a[srcreg];
  795.     UWORD srcdp = nextiword();
  796.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  797. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  798.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  799.     srca += srcdpr;
  800. {    LONG src = get_long(srca);
  801. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  802.     regs.v = regs.c = 0;
  803.     regs.z = ((LONG)(src)) == 0;
  804.     regs.n = ((LONG)(src)) < 0;
  805.     put_long(dsta,src);
  806. }}}}}}
  807. void op_2178(UWORD opcode)
  808. {
  809.     ULONG dstreg = (opcode & 3584) >> 9;
  810. {{    CPTR srca = (LONG)(WORD)nextiword();
  811.     LONG src = get_long(srca);
  812. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  813.     regs.v = regs.c = 0;
  814.     regs.z = ((LONG)(src)) == 0;
  815.     regs.n = ((LONG)(src)) < 0;
  816.     put_long(dsta,src);
  817. }}}}
  818. void op_2179(UWORD opcode)
  819. {
  820.     ULONG dstreg = (opcode & 3584) >> 9;
  821. {{    CPTR srca = nextilong();
  822.     LONG src = get_long(srca);
  823. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  824.     regs.v = regs.c = 0;
  825.     regs.z = ((LONG)(src)) == 0;
  826.     regs.n = ((LONG)(src)) < 0;
  827.     put_long(dsta,src);
  828. }}}}
  829. void op_217a(UWORD opcode)
  830. {
  831.     ULONG dstreg = (opcode & 3584) >> 9;
  832. {{    CPTR srca = m68k_getpc();
  833.     srca += (LONG)(WORD)nextiword();
  834. {    LONG src = get_long(srca);
  835. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  836.     regs.v = regs.c = 0;
  837.     regs.z = ((LONG)(src)) == 0;
  838.     regs.n = ((LONG)(src)) < 0;
  839.     put_long(dsta,src);
  840. }}}}}
  841. void op_217b(UWORD opcode)
  842. {
  843.     ULONG dstreg = (opcode & 3584) >> 9;
  844. {{    CPTR srca = m68k_getpc();
  845.     UWORD srcdp = nextiword();
  846.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  847. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  848.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  849.     srca += srcdpr;
  850. {    LONG src = get_long(srca);
  851. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  852.     regs.v = regs.c = 0;
  853.     regs.z = ((LONG)(src)) == 0;
  854.     regs.n = ((LONG)(src)) < 0;
  855.     put_long(dsta,src);
  856. }}}}}}
  857. void op_217c(UWORD opcode)
  858. {
  859.     ULONG dstreg = (opcode & 3584) >> 9;
  860. {{    LONG src = nextilong();
  861. {    CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
  862.     regs.v = regs.c = 0;
  863.     regs.z = ((LONG)(src)) == 0;
  864.     regs.n = ((LONG)(src)) < 0;
  865.     put_long(dsta,src);
  866. }}}}
  867. void op_2180(UWORD opcode)
  868. {
  869.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  870.     ULONG dstreg = (opcode & 3584) >> 9;
  871. {{    LONG src = regs.d[srcreg];
  872. {    CPTR dsta = regs.a[dstreg];
  873.     UWORD dstdp = nextiword();
  874.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  875. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  876.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  877.     dsta += dstdpr;
  878.     regs.v = regs.c = 0;
  879.     regs.z = ((LONG)(src)) == 0;
  880.     regs.n = ((LONG)(src)) < 0;
  881.     put_long(dsta,src);
  882. }}}}}
  883. void op_2188(UWORD opcode)
  884. {
  885.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  886.     ULONG dstreg = (opcode & 3584) >> 9;
  887. {{    LONG src = regs.a[srcreg];
  888. {    CPTR dsta = regs.a[dstreg];
  889.     UWORD dstdp = nextiword();
  890.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  891. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  892.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  893.     dsta += dstdpr;
  894.     regs.v = regs.c = 0;
  895.     regs.z = ((LONG)(src)) == 0;
  896.     regs.n = ((LONG)(src)) < 0;
  897.     put_long(dsta,src);
  898. }}}}}
  899. void op_2190(UWORD opcode)
  900. {
  901.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  902.     ULONG dstreg = (opcode & 3584) >> 9;
  903. {{    CPTR srca = regs.a[srcreg];
  904.     LONG src = get_long(srca);
  905. {    CPTR dsta = regs.a[dstreg];
  906.     UWORD dstdp = nextiword();
  907.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  908. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  909.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  910.     dsta += dstdpr;
  911.     regs.v = regs.c = 0;
  912.     regs.z = ((LONG)(src)) == 0;
  913.     regs.n = ((LONG)(src)) < 0;
  914.     put_long(dsta,src);
  915. }}}}}
  916. void op_2198(UWORD opcode)
  917. {
  918.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  919.     ULONG dstreg = (opcode & 3584) >> 9;
  920. {{    CPTR srca = regs.a[srcreg];
  921.     LONG src = get_long(srca);
  922. {    regs.a[srcreg] += 4;
  923. {    CPTR dsta = regs.a[dstreg];
  924.     UWORD dstdp = nextiword();
  925.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  926. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  927.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  928.     dsta += dstdpr;
  929.     regs.v = regs.c = 0;
  930.     regs.z = ((LONG)(src)) == 0;
  931.     regs.n = ((LONG)(src)) < 0;
  932.     put_long(dsta,src);
  933. }}}}}}
  934. void op_21a0(UWORD opcode)
  935. {
  936.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  937.     ULONG dstreg = (opcode & 3584) >> 9;
  938. {{    regs.a[srcreg] -= 4;
  939. {    CPTR srca = regs.a[srcreg];
  940.     LONG src = get_long(srca);
  941. {    CPTR dsta = regs.a[dstreg];
  942.     UWORD dstdp = nextiword();
  943.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  944. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  945.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  946.     dsta += dstdpr;
  947.     regs.v = regs.c = 0;
  948.     regs.z = ((LONG)(src)) == 0;
  949.     regs.n = ((LONG)(src)) < 0;
  950.     put_long(dsta,src);
  951. }}}}}}
  952. void op_21a8(UWORD opcode)
  953. {
  954.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  955.     ULONG dstreg = (opcode & 3584) >> 9;
  956. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  957.     LONG src = get_long(srca);
  958. {    CPTR dsta = regs.a[dstreg];
  959.     UWORD dstdp = nextiword();
  960.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  961. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  962.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  963.     dsta += dstdpr;
  964.     regs.v = regs.c = 0;
  965.     regs.z = ((LONG)(src)) == 0;
  966.     regs.n = ((LONG)(src)) < 0;
  967.     put_long(dsta,src);
  968. }}}}}
  969. void op_21b0(UWORD opcode)
  970. {
  971.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  972.     ULONG dstreg = (opcode & 3584) >> 9;
  973. {{    CPTR srca = regs.a[srcreg];
  974.     UWORD srcdp = nextiword();
  975.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  976. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  977.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  978.     srca += srcdpr;
  979. {    LONG src = get_long(srca);
  980. {    CPTR dsta = regs.a[dstreg];
  981.     UWORD dstdp = nextiword();
  982.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  983. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  984.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  985.     dsta += dstdpr;
  986.     regs.v = regs.c = 0;
  987.     regs.z = ((LONG)(src)) == 0;
  988.     regs.n = ((LONG)(src)) < 0;
  989.     put_long(dsta,src);
  990. }}}}}}}
  991. void op_21b8(UWORD opcode)
  992. {
  993.     ULONG dstreg = (opcode & 3584) >> 9;
  994. {{    CPTR srca = (LONG)(WORD)nextiword();
  995.     LONG src = get_long(srca);
  996. {    CPTR dsta = regs.a[dstreg];
  997.     UWORD dstdp = nextiword();
  998.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  999. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  1000.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  1001.     dsta += dstdpr;
  1002.     regs.v = regs.c = 0;
  1003.     regs.z = ((LONG)(src)) == 0;
  1004.     regs.n = ((LONG)(src)) < 0;
  1005.     put_long(dsta,src);
  1006. }}}}}
  1007. void op_21b9(UWORD opcode)
  1008. {
  1009.     ULONG dstreg = (opcode & 3584) >> 9;
  1010. {{    CPTR srca = nextilong();
  1011.     LONG src = get_long(srca);
  1012. {    CPTR dsta = regs.a[dstreg];
  1013.     UWORD dstdp = nextiword();
  1014.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  1015. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  1016.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  1017.     dsta += dstdpr;
  1018.     regs.v = regs.c = 0;
  1019.     regs.z = ((LONG)(src)) == 0;
  1020.     regs.n = ((LONG)(src)) < 0;
  1021.     put_long(dsta,src);
  1022. }}}}}
  1023. void op_21ba(UWORD opcode)
  1024. {
  1025.     ULONG dstreg = (opcode & 3584) >> 9;
  1026. {{    CPTR srca = m68k_getpc();
  1027.     srca += (LONG)(WORD)nextiword();
  1028. {    LONG src = get_long(srca);
  1029. {    CPTR dsta = regs.a[dstreg];
  1030.     UWORD dstdp = nextiword();
  1031.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  1032. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  1033.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  1034.     dsta += dstdpr;
  1035.     regs.v = regs.c = 0;
  1036.     regs.z = ((LONG)(src)) == 0;
  1037.     regs.n = ((LONG)(src)) < 0;
  1038.     put_long(dsta,src);
  1039. }}}}}}
  1040. void op_21bb(UWORD opcode)
  1041. {
  1042.     ULONG dstreg = (opcode & 3584) >> 9;
  1043. {{    CPTR srca = m68k_getpc();
  1044.     UWORD srcdp = nextiword();
  1045.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  1046. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  1047.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  1048.     srca += srcdpr;
  1049. {    LONG src = get_long(srca);
  1050. {    CPTR dsta = regs.a[dstreg];
  1051.     UWORD dstdp = nextiword();
  1052.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  1053. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  1054.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  1055.     dsta += dstdpr;
  1056.     regs.v = regs.c = 0;
  1057.     regs.z = ((LONG)(src)) == 0;
  1058.     regs.n = ((LONG)(src)) < 0;
  1059.     put_long(dsta,src);
  1060. }}}}}}}
  1061. void op_21bc(UWORD opcode)
  1062. {
  1063.     ULONG dstreg = (opcode & 3584) >> 9;
  1064. {{    LONG src = nextilong();
  1065. {    CPTR dsta = regs.a[dstreg];
  1066.     UWORD dstdp = nextiword();
  1067.     dsta += (LONG)(BYTE)(dstdp & 0xFF);
  1068. {    ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
  1069.     if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
  1070.     dsta += dstdpr;
  1071.     regs.v = regs.c = 0;
  1072.     regs.z = ((LONG)(src)) == 0;
  1073.     regs.n = ((LONG)(src)) < 0;
  1074.     put_long(dsta,src);
  1075. }}}}}
  1076. void op_21c0(UWORD opcode)
  1077. {
  1078.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1079. {{    LONG src = regs.d[srcreg];
  1080. {    CPTR dsta = (LONG)(WORD)nextiword();
  1081.     regs.v = regs.c = 0;
  1082.     regs.z = ((LONG)(src)) == 0;
  1083.     regs.n = ((LONG)(src)) < 0;
  1084.     put_long(dsta,src);
  1085. }}}}
  1086. void op_21c8(UWORD opcode)
  1087. {
  1088.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1089. {{    LONG src = regs.a[srcreg];
  1090. {    CPTR dsta = (LONG)(WORD)nextiword();
  1091.     regs.v = regs.c = 0;
  1092.     regs.z = ((LONG)(src)) == 0;
  1093.     regs.n = ((LONG)(src)) < 0;
  1094.     put_long(dsta,src);
  1095. }}}}
  1096. void op_21d0(UWORD opcode)
  1097. {
  1098.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1099. {{    CPTR srca = regs.a[srcreg];
  1100.     LONG src = get_long(srca);
  1101. {    CPTR dsta = (LONG)(WORD)nextiword();
  1102.     regs.v = regs.c = 0;
  1103.     regs.z = ((LONG)(src)) == 0;
  1104.     regs.n = ((LONG)(src)) < 0;
  1105.     put_long(dsta,src);
  1106. }}}}
  1107. void op_21d8(UWORD opcode)
  1108. {
  1109.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1110. {{    CPTR srca = regs.a[srcreg];
  1111.     LONG src = get_long(srca);
  1112. {    regs.a[srcreg] += 4;
  1113. {    CPTR dsta = (LONG)(WORD)nextiword();
  1114.     regs.v = regs.c = 0;
  1115.     regs.z = ((LONG)(src)) == 0;
  1116.     regs.n = ((LONG)(src)) < 0;
  1117.     put_long(dsta,src);
  1118. }}}}}
  1119. void op_21e0(UWORD opcode)
  1120. {
  1121.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1122. {{    regs.a[srcreg] -= 4;
  1123. {    CPTR srca = regs.a[srcreg];
  1124.     LONG src = get_long(srca);
  1125. {    CPTR dsta = (LONG)(WORD)nextiword();
  1126.     regs.v = regs.c = 0;
  1127.     regs.z = ((LONG)(src)) == 0;
  1128.     regs.n = ((LONG)(src)) < 0;
  1129.     put_long(dsta,src);
  1130. }}}}}
  1131. void op_21e8(UWORD opcode)
  1132. {
  1133.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1134. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  1135.     LONG src = get_long(srca);
  1136. {    CPTR dsta = (LONG)(WORD)nextiword();
  1137.     regs.v = regs.c = 0;
  1138.     regs.z = ((LONG)(src)) == 0;
  1139.     regs.n = ((LONG)(src)) < 0;
  1140.     put_long(dsta,src);
  1141. }}}}
  1142. void op_21f0(UWORD opcode)
  1143. {
  1144.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1145. {{    CPTR srca = regs.a[srcreg];
  1146.     UWORD srcdp = nextiword();
  1147.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  1148. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  1149.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  1150.     srca += srcdpr;
  1151. {    LONG src = get_long(srca);
  1152. {    CPTR dsta = (LONG)(WORD)nextiword();
  1153.     regs.v = regs.c = 0;
  1154.     regs.z = ((LONG)(src)) == 0;
  1155.     regs.n = ((LONG)(src)) < 0;
  1156.     put_long(dsta,src);
  1157. }}}}}}
  1158. void op_21f8(UWORD opcode)
  1159. {
  1160. {{    CPTR srca = (LONG)(WORD)nextiword();
  1161.     LONG src = get_long(srca);
  1162. {    CPTR dsta = (LONG)(WORD)nextiword();
  1163.     regs.v = regs.c = 0;
  1164.     regs.z = ((LONG)(src)) == 0;
  1165.     regs.n = ((LONG)(src)) < 0;
  1166.     put_long(dsta,src);
  1167. }}}}
  1168. void op_21f9(UWORD opcode)
  1169. {
  1170. {{    CPTR srca = nextilong();
  1171.     LONG src = get_long(srca);
  1172. {    CPTR dsta = (LONG)(WORD)nextiword();
  1173.     regs.v = regs.c = 0;
  1174.     regs.z = ((LONG)(src)) == 0;
  1175.     regs.n = ((LONG)(src)) < 0;
  1176.     put_long(dsta,src);
  1177. }}}}
  1178. void op_21fa(UWORD opcode)
  1179. {
  1180. {{    CPTR srca = m68k_getpc();
  1181.     srca += (LONG)(WORD)nextiword();
  1182. {    LONG src = get_long(srca);
  1183. {    CPTR dsta = (LONG)(WORD)nextiword();
  1184.     regs.v = regs.c = 0;
  1185.     regs.z = ((LONG)(src)) == 0;
  1186.     regs.n = ((LONG)(src)) < 0;
  1187.     put_long(dsta,src);
  1188. }}}}}
  1189. void op_21fb(UWORD opcode)
  1190. {
  1191. {{    CPTR srca = m68k_getpc();
  1192.     UWORD srcdp = nextiword();
  1193.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  1194. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  1195.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  1196.     srca += srcdpr;
  1197. {    LONG src = get_long(srca);
  1198. {    CPTR dsta = (LONG)(WORD)nextiword();
  1199.     regs.v = regs.c = 0;
  1200.     regs.z = ((LONG)(src)) == 0;
  1201.     regs.n = ((LONG)(src)) < 0;
  1202.     put_long(dsta,src);
  1203. }}}}}}
  1204. void op_21fc(UWORD opcode)
  1205. {
  1206. {{    LONG src = nextilong();
  1207. {    CPTR dsta = (LONG)(WORD)nextiword();
  1208.     regs.v = regs.c = 0;
  1209.     regs.z = ((LONG)(src)) == 0;
  1210.     regs.n = ((LONG)(src)) < 0;
  1211.     put_long(dsta,src);
  1212. }}}}
  1213. void op_23c0(UWORD opcode)
  1214. {
  1215.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1216. {{    LONG src = regs.d[srcreg];
  1217. {    CPTR dsta = nextilong();
  1218.     regs.v = regs.c = 0;
  1219.     regs.z = ((LONG)(src)) == 0;
  1220.     regs.n = ((LONG)(src)) < 0;
  1221.     put_long(dsta,src);
  1222. }}}}
  1223. void op_23c8(UWORD opcode)
  1224. {
  1225.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1226. {{    LONG src = regs.a[srcreg];
  1227. {    CPTR dsta = nextilong();
  1228.     regs.v = regs.c = 0;
  1229.     regs.z = ((LONG)(src)) == 0;
  1230.     regs.n = ((LONG)(src)) < 0;
  1231.     put_long(dsta,src);
  1232. }}}}
  1233. void op_23d0(UWORD opcode)
  1234. {
  1235.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1236. {{    CPTR srca = regs.a[srcreg];
  1237.     LONG src = get_long(srca);
  1238. {    CPTR dsta = nextilong();
  1239.     regs.v = regs.c = 0;
  1240.     regs.z = ((LONG)(src)) == 0;
  1241.     regs.n = ((LONG)(src)) < 0;
  1242.     put_long(dsta,src);
  1243. }}}}
  1244. void op_23d8(UWORD opcode)
  1245. {
  1246.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1247. {{    CPTR srca = regs.a[srcreg];
  1248.     LONG src = get_long(srca);
  1249. {    regs.a[srcreg] += 4;
  1250. {    CPTR dsta = nextilong();
  1251.     regs.v = regs.c = 0;
  1252.     regs.z = ((LONG)(src)) == 0;
  1253.     regs.n = ((LONG)(src)) < 0;
  1254.     put_long(dsta,src);
  1255. }}}}}
  1256. void op_23e0(UWORD opcode)
  1257. {
  1258.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1259. {{    regs.a[srcreg] -= 4;
  1260. {    CPTR srca = regs.a[srcreg];
  1261.     LONG src = get_long(srca);
  1262. {    CPTR dsta = nextilong();
  1263.     regs.v = regs.c = 0;
  1264.     regs.z = ((LONG)(src)) == 0;
  1265.     regs.n = ((LONG)(src)) < 0;
  1266.     put_long(dsta,src);
  1267. }}}}}
  1268. void op_23e8(UWORD opcode)
  1269. {
  1270.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1271. {{    CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
  1272.     LONG src = get_long(srca);
  1273. {    CPTR dsta = nextilong();
  1274.     regs.v = regs.c = 0;
  1275.     regs.z = ((LONG)(src)) == 0;
  1276.     regs.n = ((LONG)(src)) < 0;
  1277.     put_long(dsta,src);
  1278. }}}}
  1279. void op_23f0(UWORD opcode)
  1280. {
  1281.     ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
  1282. {{    CPTR srca = regs.a[srcreg];
  1283.     UWORD srcdp = nextiword();
  1284.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  1285. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  1286.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  1287.     srca += srcdpr;
  1288. {    LONG src = get_long(srca);
  1289. {    CPTR dsta = nextilong();
  1290.     regs.v = regs.c = 0;
  1291.     regs.z = ((LONG)(src)) == 0;
  1292.     regs.n = ((LONG)(src)) < 0;
  1293.     put_long(dsta,src);
  1294. }}}}}}
  1295. void op_23f8(UWORD opcode)
  1296. {
  1297. {{    CPTR srca = (LONG)(WORD)nextiword();
  1298.     LONG src = get_long(srca);
  1299. {    CPTR dsta = nextilong();
  1300.     regs.v = regs.c = 0;
  1301.     regs.z = ((LONG)(src)) == 0;
  1302.     regs.n = ((LONG)(src)) < 0;
  1303.     put_long(dsta,src);
  1304. }}}}
  1305. void op_23f9(UWORD opcode)
  1306. {
  1307. {{    CPTR srca = nextilong();
  1308.     LONG src = get_long(srca);
  1309. {    CPTR dsta = nextilong();
  1310.     regs.v = regs.c = 0;
  1311.     regs.z = ((LONG)(src)) == 0;
  1312.     regs.n = ((LONG)(src)) < 0;
  1313.     put_long(dsta,src);
  1314. }}}}
  1315. void op_23fa(UWORD opcode)
  1316. {
  1317. {{    CPTR srca = m68k_getpc();
  1318.     srca += (LONG)(WORD)nextiword();
  1319. {    LONG src = get_long(srca);
  1320. {    CPTR dsta = nextilong();
  1321.     regs.v = regs.c = 0;
  1322.     regs.z = ((LONG)(src)) == 0;
  1323.     regs.n = ((LONG)(src)) < 0;
  1324.     put_long(dsta,src);
  1325. }}}}}
  1326. void op_23fb(UWORD opcode)
  1327. {
  1328. {{    CPTR srca = m68k_getpc();
  1329.     UWORD srcdp = nextiword();
  1330.     srca += (LONG)(BYTE)(srcdp & 0xFF);
  1331. {    ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
  1332.     if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
  1333.     srca += srcdpr;
  1334. {    LONG src = get_long(srca);
  1335. {    CPTR dsta = nextilong();
  1336.     regs.v = regs.c = 0;
  1337.     regs.z = ((LONG)(src)) == 0;
  1338.     regs.n = ((LONG)(src)) < 0;
  1339.     put_long(dsta,src);
  1340. }}}}}}
  1341. void op_23fc(UWORD opcode)
  1342. {
  1343. {{    LONG src = nextilong();
  1344. {    CPTR dsta = nextilong();
  1345.     regs.v = regs.c = 0;
  1346.     regs.z = ((LONG)(src)) == 0;
  1347.     regs.n = ((LONG)(src)) < 0;
  1348.     put_long(dsta,src);
  1349. }}}}
  1350.